Virtual machines enable a host computer to run simultaneously multiple applications or operating systems on the same computer. The host computer allocates a certain amount of the host's resources to each of the virtual machines. Each virtual machine is then able to use the allocated resources to execute applications, including operating systems. The virtual machine virtualizes the underlying hardware of the host computer or emulates hardware devices, making the use of the virtual machine transparent to the operating system or the user of the computer. In the virtual personal computer (PC) environment, the PC hardware is shared between multiple virtual machines.
Historically, due to the complexity and processing requirements of virtualization, this technology has typically been available only on servers and/or mainframes, targeted for the use by sophisticated users. However, as CPU technology advances, virtualization is currently being made available for the desktop environment (e.g., PCs with x86 processor architecture) for use by novice users. In the related art, techniques enabling virtualization of x86 architecture based processors may be found, for example, in U.S. Pat. Nos. 6,397,242, 6,496,847 and 6,961,941 that are incorporated herein by reference merely for the useful understanding of the background of the invention. Solutions for virtualization of desktop environments are provided, for example, by VMware®, Inc., Xen™.
Recently, solutions for providing centralized hosting for virtual machines that execute (virtual) desktops have been developed. Such solutions consist of centralized servers that are partitioned into multiple virtual machines that host the virtual desktops, thereby providing a desktop for each user. The centralized hosting provides the manageability of server-based computing, while the dedicated environment provides the flexibility and compatibility with applications that a desktop enables.
FIG. 1 shows a diagram of a centralized hosting system 100 of virtual desktops. The system 100 includes a number of N servers 110-1 through 110-N, each of which is ‘capable of executing a cluster of virtual machines. Each virtual machine is dedicated to run a virtual desktop. The servers 110 are coupled to storage devices including at least a virtual machine disk (VM-disk) 120 and a user-data disk 125. The VM-disk 120 maintains information required for the execution of a virtual desktop typically in the form of templates and snapshots. The user-data disk 125 maintains information saved by users, e.g., documents, emails, and so on. The system 100 further includes a controller (not shown) that manages desktops virtually installed on servers 110. Generally, the controller executes the tasks including, for example, installation of desktops, recovery and restore of desktops, and the likes. A network 140 connects endusers of client computers 150-1 through 150-M to the servers 110. The network 140 may include a local area network (LAN), a wide area network (WAN), the Internet, or any combination thereof.
A template usually includes an operating system (OS) and a set of common applications to a group of users. The utilization of templates eases the installation and management of virtual desktops in an organization. For example, two different templates may be defined: one for the finance division and the other for the research and development division. Each template may include different sets of applications, users' and machine's settings, and operating systems. Snapshots typically include changes made to initial configuration of the virtual desktop (i.e., templates). For example, changes to applications or settings made by a user after the initial setup and installation of new applications or software patches.
FIG. 2 shows a data structure 200 used for managing snapshots of virtual desktops. The data structure 200 is in a tree form where the root 210 is the template and each node 220 is a snapshot taken by the user (e.g., when the user backs up the desktop) and represents the state of the virtual machine at the time the snapshot was created.
The disadvantage of the tree structure 200 is that a restore point cannot be correlated to a specific time, but rather to a certain state of the virtual desktop. For example, each node 220 may include a snapshot copy of a different installation version of an application executed by the desktop. A user trying to recover a desktop cannot tell from the structure 200 when different versions were installed and what the best operation mode that the desktop should be returned to is. Another major disadvantage of the tree structure 200 is that users cannot restore their desktop without modifying the snapshot (backup) copy to which the desktop is returned. For example, if the current state of the virtual machine is represented using a snapshot of node 220-5 and the user decides to return to a snapshot of node 220-3, this snapshot is modified. As a result, the user cannot rollback to a previous state or to any other state of the virtual desktop.
It would be therefore advantageous to provide a solution for managing snapshots of virtual desktops to efficiently restore the virtual desktops.